#!/usr/bin/env python3
# -*-coding:utf-8-*-

from math import log, sqrt, exp
from scipy import stats
from time import time

def mcs_pure_python(S0, K, T, r, sigma, M, I):
    seed(20000)
    t0 = time()
    """
    # Parameters
    S0 = 100. # initial value
    K = 105. # strike price
    T = 1.0 # maturity
    r = 0.05 # riskless short rate
    sigma = 0.2 # volatility
    M = 50 # number of time steps
    dt = T / M # length of time interval
    I = 250000 # number of paths
    """
    # Simulating I paths with M time steps
    dt = T / M

    S = []
    for i in range(I):
        path = []
        for t in range(M + 1):
            if t == 0:
                path.append(S0)
            else:
                z = gauss(0.0, 1.0)
                St = path[t - 1] * exp((r - 0.5 * sigma ** 2) * dt
                                       + sigma * sqrt(dt) * z)
                path.append(St)
        S.append(path)
    # Calculating the Monte Carlo estimator
    C0 = exp(-r * T) * sum([max(path[-1] - K, 0) for path in S]) / I
    # Results output
    tpy = time() - t0
    print("European Option Value %7.3f" % C0)
    print("Duration in Seconds %7.3f" % tpy)
    return C0
